/*
 * @Author: lihao
 * @Date: 2022-03-05 09:43:23
 * @LastEditors: YWY
 * @LastEditTime: 2022-03-06 23:02:27
 * @FilePath: \campus-sns-campus-community\src\utils\ws\wsUtils.js
 * @Description: 建立ws连接相关接口
 * Copyright (c) 2022 by 用户/公司名, All Rights Reserved. 
 */

let websocket = null
let message = null


let baseUrl = "cosine.ren:8001"
// let baseUrl = "127.0.0.1:8001"
// let p_user_id = null
// let p_token = ""

import { mainStore } from "@/store/index.js";
/**
 * 
 * @param {Number} user_id 用户id
 * @param {String} token 令牌
 * @param {String} baseUrl 基础url
 */
export function wsConnection(token) {
  const main = mainStore();
  websocket = new WebSocket("ws://" + baseUrl + "/", [token]);
  // 监听连接开启
  websocket.onopen = function () {
    console.log("连接成功");
  }
  // 监听连接关闭
  websocket.onclose = function () {
    console.log("退出连接");
  }
  // 监听后端发来的消息
  websocket.onmessage = function (event) {
    console.log("收到消息" + event.data);
    message = JSON.parse(event.data)
    console.log(message);
    main.$patch((state) => {
      state.wsMessage = message
    })
  }
  // 监听错误
  websocket.onerror = function () {
    console.log("连接出错");
  }
  console.log(main.wsTimer);
  if (main.wsTimer == null) {
    main.$patch((state) => {
      state.wsTimer = setInterval(() => {
        if (websocket.readyState != 1) {
          wsConnection(token);
          return
        }
        console.log('正在连接');
      }, 500)
    })
  }

}

export function reConnection(token) {
  wsConnection(token)
}
/**
 * 私发消息
 * @param {number} toUId 发送给的用户
 * @param {object} data 发送的数据
 */
export function sendPrivateMessageToUser(toUId, data) {
  try {
    // 前端发送消息
    websocket.send(JSON.stringify({
      fromUId: null,  //  发起通信的用户
      toUId: toUId,    // 被通信的用户
      type: 'private', // 通信的类型， private（私发）、群发（group）、错误（error）
      data
    }))
    return "消息发送成功！"
  } catch (err) {
    return "消息发送失败！"
  }
}
/**
 * 群发消息
 * @param {Object}} data 发送的数据
 */
export function sendGroupMessageToAllUser(data) {
  try {
    // 前端发送消息
    websocket.send(JSON.stringify({
      fromUId: null,  //  发起通信的用户
      toUId: null,    // 被通信的用户
      type: 'group', // 通信的类型， private（私发）、群发（group）、错误（error）
      data
    }))
    return "消息发送成功！"
  } catch (err) {
    return "消息发送失败！"

  }

}

export function colseWsConnection() {
  websocket.close()
}
